﻿using System;
using System.Collections.Generic;
using AMM.CustomClassLibrary;
using AMM.DataAccess.Store;
using AMM.Model;

namespace AMM.Business.Store {
    public class ProductStoreProcessor : BaseProcessor {

        private ProductStoreRepository _productStoreRepository;

        public ProductStoreProcessor() {
            this._productStoreRepository = new ProductStoreRepository();
        }

        public ProductStore FetchProductStoreByProductAndStoreBasisId(int productId, int storeBasisId) {
            try {
                return this._productStoreRepository.FetchProductStoreByProductAndStoreBasisId(productId, storeBasisId);
            }
            catch (Exception ex) {
                Logger.Error(ex.Message, ex);
                throw this.BuildException("获取指定仓库成品库存资料失败！");
            }
        }

        public List<ProductStore> FetchProductStoreByProductId(int productId) {
            try {
                return this._productStoreRepository.FetchProductStoreByProductId(productId);
            }
            catch (Exception ex) {
                Logger.Error(ex.Message, ex);
                throw this.BuildException("获取指定成品库存资料失败！");
            }
        }

        public List<ProductStore> FetchProductStoreByStoreBasisId(int storeBasisId) {
            try {
                return this._productStoreRepository.FetchProductStoreByStoreBasisId(storeBasisId);
            }
            catch (Exception ex) {
                Logger.Error(ex.Message, ex);
                throw this.BuildException("获取指定仓库成品库存资料失败！");
            }
        }
    }

    public class MaterialStoreProcessor : BaseProcessor {

        private MaterialStoreRepository _materialStoreRepository;

        public MaterialStoreProcessor() {
            this._materialStoreRepository = new MaterialStoreRepository();
        }

        public MaterialStore FetchMaterialStoreByMaterialAndStoreBasisId(int materialId, int storeBasisId) {
            try {
                return this._materialStoreRepository.FetchMaterialStoreByMaterialAndStoreBasisId(materialId, storeBasisId);
            }
            catch (Exception ex) {
                Logger.Error(ex.Message, ex);
                throw this.BuildException("获取指定仓库物料库存资料失败！");
            }
        }

        public List<MaterialStore> FetchMaterialStoreByMaterialId(int materialId) {
            try {
                return this._materialStoreRepository.FetchMaterialStoreByMaterialId(materialId);
            }
            catch (Exception ex) {
                Logger.Error(ex.Message, ex);
                throw this.BuildException("获取指定物料库存资料失败！");
            }
        }

        public List<MaterialStore> FetchMaterialStoreByStoreBasisId(int storeBasisId) {
            try {
                return this._materialStoreRepository.FetchMaterialStoreByStoreBasisId(storeBasisId);
            }
            catch (Exception ex) {
                Logger.Error(ex.Message, ex);
                throw this.BuildException("获取指定仓库物料库存资料失败！");
            }
        }
    }
}
